package com.miguo.plugins.share;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.LinearLayout;

import com.miguo.app.AppConfig;
import com.miguo.view.listener.ShareListener;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzoneShare;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;

import org.json.JSONObject;

import java.util.ArrayList;

/**
 * File Names: ShareQQActivity
 * Describe:
 * User: LinXiaoZhi(87100854@qq.com)
 * Date: 2015-10-25
 * Time: 00:17
 */
public class ShareQQActivity extends Activity {

    private Tencent mTencent;

    private static JSONObject mParams;

    private static ShareListener mListener;

    private String TITLE;
    private String IMAGE_URL;
    private String TARGET_URL;
    private String SUMMARY;
    private String APP_NAME;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        LinearLayout layout = new LinearLayout(this);
        layout.setBackgroundResource(0);
        setContentView(layout);
        
        mTencent = Tencent.createInstance(AppConfig.SHARE.QQ_APP_ID, this);
        TITLE = mParams.optString("title");
        SUMMARY = mParams.optString("desc");
        APP_NAME = mParams.optString("app_name");
        IMAGE_URL = mParams.optString("image_url");
        TARGET_URL = mParams.optString("url");

        if (mParams.optInt("scene") == 1) {
            shareQQ();
        } else {
            shareQzone();
        }
    }


    private void shareQQ() {
        Bundle params = new Bundle();
        /**
         * 必填
         * 分享的类型
         */
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
        //分享的标题, 最长30个字符。
        /**
         * 必选
         * 分享的标题, 最长30个字符。
         */
        params.putString(QQShare.SHARE_TO_QQ_TITLE, TITLE);
        /**
         * 可选
         * 分享的消息摘要，最长40个字符。
         */
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY, SUMMARY);
        /**
         * 可选
         * 分享图片的URL或者本地路径。
         */
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, IMAGE_URL);
        /**
         * 必选
         * 这条分享消息被好友点击后的跳转URL。
         */
        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, TARGET_URL);
        /**
         * 可选
         * 手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替。
         */
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, APP_NAME);
        /**
         * 可选
         * 分享额外选项，两种类型可选（默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框）：
         * QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN，分享时自动打开分享到QZone的对话框。
         * QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE，分享时隐藏分享到QZone按钮。
         */
        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
        mTencent.shareToQQ(this, params, shareListener);
    }

    private void shareQzone() {
        Bundle params = new Bundle();
        /**
         * 选填
         * 分享类型
         */
        params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
        /**
         * 必填
         * 分享的标题，最多200个字符。
         */
        params.putString(QzoneShare.SHARE_TO_QQ_TITLE, TITLE);
        /**
         * 选填
         * 分享的摘要，最多600字符。
         */
        params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, SUMMARY);
        /**
         * 必填
         * 需要跳转的链接，URL字符串。
         */
        params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, TARGET_URL);

        /**
         * 选填
         * putStringArrayList 多图
         * 分享的图片, 以ArrayList<String>的类型传入，以便支持多张图片（注：图片最多支持9张图片，多余的图片会被丢弃）。
         * QZone接口暂不支持发送多张图片的能力，若传入多张图片，则会自动选入第一张图片作为预览图。多图的能力将会在以后支持。
         */
        ArrayList<String> imageUrls = new ArrayList<String>();
        imageUrls.add(IMAGE_URL);
        params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
        mTencent.shareToQzone(this, params, shareListener);
    }

    IUiListener shareListener = new IUiListener() {
        @Override
        public void onCancel() {
            mListener.onCancel();
            ShareQQActivity.this.finish();
        }

        @Override
        public void onComplete(Object response) {
            mListener.onComplete();
            ShareQQActivity.this.finish();
        }

        @Override
        public void onError(UiError e) {
            mListener.onError();
            ShareQQActivity.this.finish();
        }
    };

    public static void invoke(Activity activity, JSONObject param, ShareListener listener) {
        mParams = param;
        mListener = listener;
        Intent intent = new Intent(activity, ShareQQActivity.class);
        activity.startActivity(intent);
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mTencent.onActivityResultData(requestCode, resultCode, data, shareListener);
    }

}